#ifndef _SCENE_H_
#define _SCENE_H_

#include "raytrace.h"

#define MATERIALS 4
#define LIGHTS    2
#define SPHERES   4

#define WIDTH  800
#define HEIGHT 600

/* Scene Material */
/* diffuse r,g,b - reflection - specular r,g,b - power */
static const float myMaterials[MATERIALS][8]={ {0.8, 0.8, 0.0, 0.5, 1.0, 1.0, 1.0, 60},
                                               {0.0, 0.8, 0.8, 0.5, 1.0, 1.0, 1.0, 60},
                                               {0.8, 0.0, 0.8, 0.5, 1.0, 1.0, 1.0, 60},
                                               {0.2, 0.4, 0.6, 0.5, 1.0, 1.0, 1.0, 60}
                                             };

/* Scene Spheres */
/* pos x, pos y, pos z, size, material index */ 
static const float mySpheres[SPHERES-1][5]={ {150.0, 400.0, 50.0, 50, 0},
                                           {500.0, 200.0, 100.0, 50, 1},
                                           {300.0, 140.0, 200.0, 50, 2}
                                         };

/* Scene Lights */
/* pos x, pos y, pos z, r, g, b */
static const float myLights[LIGHTS][6]={ {0.000, 240.0, 40.000, 1.0, 1.0, 1.0},
                                         {320.0, 300.0, -10000.0, 0.6, 0.7, 1.0}
                                       };


/* Our scene, composed of materials, objects and lightsources,
 * as well as size of the final image */ 
typedef struct{
        material materials[MATERIALS];
        sphere   spheres[SPHERES];
        light    lights[LIGHTS];
        int      width, height;
}scene;

/* Function Prototypes */
void construct(scene *myScene, sphere *move);

#endif /* _SCENE_H_ */
